package com.lekang.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.lekang.common.core.domain.entity.SysUser;
import lombok.Data;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.lekang.common.annotation.Excel;
import com.lekang.common.core.domain.BaseEntity;

/**
 * 请假对象 leave_request
 * 
 * @author zhihao
 * @date 2025-10-14
 */
@Data
public class LeaveRequest extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 老人外键编号 */
    @Excel(name = "老人外键编号")
    private Long elderlyId;

    /** 请假开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "请假开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date leaveStartTime;

    /** 预请假结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预请假结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expectedEndTime;

    /** 实际结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actualEndTime;

    /** 实际请假天数 */
    private Long actualLeaveDays;

    /** 实际返回备注 */
    private String actualReturnRemark;

    /** 创建人 */
    @Excel(name = "创建人")
    private Long creator;
    private SysUser sysUser;
    private Elderly elderly;

    /** 请假状态 */
    @Excel(name = "请假状态")
    private String leaveStatus;

    /** 陪同人类型 */
    private String companionType;

    /** 陪同人姓名 */
    private String companionName;

    /** 陪同人电话 */
    private String companionPhone;

    /** 预请假天数 */
    private Long expectedLeaveDays;

    /** 请假理由 */
    private String leaveReason;

    /** 业务ID */
    private String businessId;

    /** 额外字段1 */
    private String extraField1;

    /** 额外字段2 */
    private String extraField2;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setElderlyId(Long elderlyId) 
    {
        this.elderlyId = elderlyId;
    }

    public Long getElderlyId() 
    {
        return elderlyId;
    }

    public void setLeaveStartTime(Date leaveStartTime) 
    {
        this.leaveStartTime = leaveStartTime;
    }

    public Date getLeaveStartTime() 
    {
        return leaveStartTime;
    }

    public void setExpectedEndTime(Date expectedEndTime) 
    {
        this.expectedEndTime = expectedEndTime;
    }

    public Date getExpectedEndTime() 
    {
        return expectedEndTime;
    }

    public void setActualEndTime(Date actualEndTime) 
    {
        this.actualEndTime = actualEndTime;
    }

    public Date getActualEndTime() 
    {
        return actualEndTime;
    }

    public void setActualLeaveDays(Long actualLeaveDays) 
    {
        this.actualLeaveDays = actualLeaveDays;
    }

    public Long getActualLeaveDays() 
    {
        return actualLeaveDays;
    }

    public void setActualReturnRemark(String actualReturnRemark) 
    {
        this.actualReturnRemark = actualReturnRemark;
    }

    public String getActualReturnRemark() 
    {
        return actualReturnRemark;
    }

    public void setCreator(Long creator) 
    {
        this.creator = creator;
    }

    public Long getCreator() 
    {
        return creator;
    }

    public void setLeaveStatus(String leaveStatus) 
    {
        this.leaveStatus = leaveStatus;
    }

    public String getLeaveStatus() 
    {
        return leaveStatus;
    }

    public void setCompanionType(String companionType) 
    {
        this.companionType = companionType;
    }

    public String getCompanionType() 
    {
        return companionType;
    }

    public void setCompanionName(String companionName) 
    {
        this.companionName = companionName;
    }

    public String getCompanionName() 
    {
        return companionName;
    }

    public void setCompanionPhone(String companionPhone) 
    {
        this.companionPhone = companionPhone;
    }

    public String getCompanionPhone() 
    {
        return companionPhone;
    }

    public void setExpectedLeaveDays(Long expectedLeaveDays) 
    {
        this.expectedLeaveDays = expectedLeaveDays;
    }

    public Long getExpectedLeaveDays() 
    {
        return expectedLeaveDays;
    }

    public void setLeaveReason(String leaveReason) 
    {
        this.leaveReason = leaveReason;
    }

    public String getLeaveReason() 
    {
        return leaveReason;
    }

    public void setBusinessId(String businessId) 
    {
        this.businessId = businessId;
    }

    public String getBusinessId() 
    {
        return businessId;
    }

    public void setExtraField1(String extraField1) 
    {
        this.extraField1 = extraField1;
    }

    public String getExtraField1() 
    {
        return extraField1;
    }

    public void setExtraField2(String extraField2) 
    {
        this.extraField2 = extraField2;
    }

    public String getExtraField2() 
    {
        return extraField2;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("elderlyId", getElderlyId())
            .append("leaveStartTime", getLeaveStartTime())
            .append("expectedEndTime", getExpectedEndTime())
            .append("actualEndTime", getActualEndTime())
            .append("actualLeaveDays", getActualLeaveDays())
            .append("actualReturnRemark", getActualReturnRemark())
            .append("createTime", getCreateTime())
            .append("creator", getCreator())
            .append("leaveStatus", getLeaveStatus())
            .append("companionType", getCompanionType())
            .append("companionName", getCompanionName())
            .append("companionPhone", getCompanionPhone())
            .append("expectedLeaveDays", getExpectedLeaveDays())
            .append("leaveReason", getLeaveReason())
            .append("businessId", getBusinessId())
            .append("extraField1", getExtraField1())
            .append("extraField2", getExtraField2())
            .toString();
    }
}
